#!/usr/bin/env python3
"""
图书管理系统启动脚本
"""

import os
import sys
import subprocess
import importlib.util

def check_python_version():
    """检查Python版本"""
    if sys.version_info < (3, 7):
        print("❌ 需要Python 3.7或更高版本")
        sys.exit(1)
    print(f"✅ Python版本: {sys.version}")

def install_dependencies():
    """安装依赖包"""
    print("🔄 检查并安装依赖包...")
    
    # 检查requirements.txt是否存在
    if not os.path.exists("requirements.txt"):
        print("❌ 未找到requirements.txt文件")
        return False
    
    try:
        # 安装依赖
        subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"])
        print("✅ 依赖包安装完成")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ 依赖包安装失败: {e}")
        return False

def check_environment():
    """检查环境配置"""
    print("🔄 检查环境配置...")
    
    # 检查.env文件
    if not os.path.exists(".env"):
        print("⚠️  未找到.env文件，将使用默认配置")
        # 创建默认.env文件
        with open(".env", "w", encoding="utf-8") as f:
            f.write("DATABASE_URL=mysql+pymysql://root:123456@localhost:3306/library_db\n")
            f.write("SECRET_KEY=your-secret-key-here-change-in-production\n")
            f.write("ALGORITHM=HS256\n")
            f.write("ACCESS_TOKEN_EXPIRE_MINUTES=30\n")
        print("✅ 已创建默认.env文件")
    
    return True

def start_application():
    """启动应用"""
    print("🚀 启动图书管理系统...")
    
    try:
        # 导入并运行主应用
        import uvicorn
        uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)
    except ImportError:
        print("❌ 未找到uvicorn，请先安装依赖包")
        return False
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        return False

def main():
    """主函数"""
    print("=" * 50)
    print("📚 图书管理系统启动器")
    print("=" * 50)
    
    # 检查Python版本
    check_python_version()
    
    # 安装依赖
    if not install_dependencies():
        sys.exit(1)
    
    # 检查环境配置
    if not check_environment():
        sys.exit(1)
    
    print("=" * 50)
    print("🎉 系统准备就绪！")
    print("📖 访问地址: http://localhost:8000")
    print("📋 API文档: http://localhost:8000/docs")
    print("=" * 50)
    
    # 启动应用
    start_application()

if __name__ == "__main__":
    main()